perm filename ADHOC.SAI[1,BGB] blob
sn#001255 filedate 1972-10-22 generic text, type T, neo UTF8
00100 BEGIN "ADHOC"
00200 REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
00300 REQUIRE "TRIGER[SYS,BGB]" SOURCE_FILE;
00400 α ROAD TRAJECTORY;
00500 REQUIRE "TRAJCT[CAR,BGB]" LOAD_MODULE;
00600 EXTERNAL PROCEDURE TRAJCT (REAL L,∂R,∂Z; REFERENCE REAL X,Y,Z);
00700 α L DASH VALUES FOR DASHES 24 TO 38;
00800 PRELOAD_WITH
00900 1579.2233, 8.33,
01000 1602.8899, 8.41,
01100 1626.3066, 8.25,
01200 1649.9733, 8.41,
01300 1673.6399, 8.75,
01400 1697.8899, 8.50,
01500 1722.3899, 8.16,
01600 1745.1399, 8.33,
01700 1768.4733, 8.25,
01800 1792.0566, 8.16,
01900 1816.2233, 8.66,
02000 1841.3066, 8.91,
02100 1866.4733, 8.91,
02200 1892.3066, 9.16,
02300 1917.8066, 9.08,
02400 1943.4733, 8.91;
02500 REAL ARRAY DASH[1:32];
02600 REAL ARRAY XYZ[1:31,1:3];
02700 α ASSORTED CONSTANTS;
02800 INTEGER I,FLG,FILE,TV,J;
02900 REAL AZM,RXY,ALT;
03000 REAL ARRAY CAM[1:4,1:3];
03100 REAL X,Y,Z;
03200 REAL IX,IY,IZ,JX,JY,JZ,KX,KY,KZ;
03300 REAL CTILT,STILT;
03400 REAL TMP1,TMP2,R;
03500 α TILT COSINE AND SINE;
03600 CTILT ← COS(12*π/180);
03700 STILT ← -SIN(12*π/180);
03800 α COMPUTE THE L FOR THE LAGGING EDGES OF THE DASHES;
03900 FOR I←2 STEP 2 UNTIL 30 DO
04000 DASH[I] ← DASH[I] + DASH[I-1];
04100 α COMPUTE THE X,Y,Z LOCII FOR ALL THE IMAGES;
04200 FOR I←1 STEP 1 UNTIL 31 DO
04300 BEGIN
04400 TRAJCT(DASH[I],0,4.25,X,Y,Z);
04500 XYZ[I,1]← X;
04600 XYZ[I,2]← Y;
04700 XYZ[I,3]← Z;
04800 END;
00100 α OPEN AND NAME THE A.CAM FILE;
00200 OPEN(1,"DSK",0,0,3,0,0,0);
00300 ENTER(1,"ACAM.LST",FLG);
00310 OPEN(2,"DSK",8,0,3,0,0,0);
00320 ENTER(2,"A.CAM",FLG);
00400 α OUTPUT SIXBIT FILE NAME AND A CAMERA LOCOR FOR THE 30 FRAMES;
00500 FOR I←1 STEP 1 UNTIL 30 DO
00600 BEGIN
00700 FILE ← CVSIX("A"&CVS(I));
00800 WORDOUT(2,FILE);
00900 α UNIT K VECTOR FROM THERE TO HERE;
01000 KX ← XYZ[I,1] - XYZ[I+1,1];
01100 KY ← XYZ[I,2] - XYZ[I+1,2];
01200 KZ ← XYZ[I,3] - XYZ[I+1,3];
01300 R ← SQRT(KX↑2 + KY↑2 + KZ↑2);
01400 KX ← KX/R;
01500 KY ← KY/R;
01600 KZ ← KZ/R;
01700 α TILT THE K VECTOR IN A VERTICAL PLANE;
01800 RXY ← SQRT(KX↑2+KY↑2);
01900 TMP1 ← CTILT*KZ-STILT*RXY;
02000 TMP2 ← CTILT*RXY+STILT*KZ;
02100 KX ← KX*TMP2/RXY;
02200 KY ← KY*TMP2/RXY;
02300 KZ ← TMP1;
02400 α PUT THE I UNIT VECTOR π/2 CCW FROM K IN THE HORIZONTAL PLANE;
02500 IX ← -KY;
02600 IY ← +KX;
02700 IZ ← 0;
02800 R ← SQRT(IX↑2+IY↑2);
02900 IX ← IX/R;
03000 IY ← IY/R;
03100 α J IS K CROSS I;
03200 JX ← KY*IZ - IY*KZ;
03300 JY ← IX*KZ - KX*IZ;
03400 JZ ← KX*IY - IX*KY;
00100 α PACK IT UP AND OUTPUT THE CAM LOCOR;
00200 ARRBLT(CAM[1,1],IX,9);
00300 CAM[4,1]← XYZ[I,1];
00400 CAM[4,2]← XYZ[I,2];
00500 CAM[4,3]← XYZ[I,3];
00600 ARRYOUT(2,CAM[1,1],12);
00700
00800 α LISTING OUTPUT;
00900 BEGIN INTEGER II,JJ;
01000 OUT(1,"TVFILE A"&CVS(I));
01100 SETFORMAT(10,3);
01200 FOR II←1 STEP 1 UNTIL 4 DO
01300 BEGIN
01400 OUT(1,13&10);
01500 FOR JJ←1 STEP 1 UNTIL 3 DO
01600 OUT(1,9&CVF(CAM[II,JJ]));
01800 END;
01900 OUT(1,13&10);
02000 AZM ← 180*ATAN2(KY,KX)/π;
02100 RXY ← SQRT(KX↑2 + KY↑2);
02200 ALT ← 180*ATAN2(KZ,RXY)/π;
02300 SETFORMAT(0,7);
02400 OUT(1,"AZIMUTH = "&CVS(AZM)&9);
02500 OUT(1,"ALTITUDE = "&CVS(ALT)&13&10);
02600 OUT(1,13&10);
02800 END;
02900 END;
02940 OUT(1,13&10&"EOF."&13&10);
03000 RELEASE(1);
03010 RELEASE(2);
03200 END "ADHOC";